package fr.generali.accueilclient.gwt.client.view;

import fr.generali.accueilclient.gwt.client.presenter.ViewPresenter;

/**
 * Interface pour les vues qui sont affichées dans une popup.
 * 
 * @author M. Abdennebi 13 avr. 2012
 */
public interface PopupView<P extends ViewPresenter< ? >> extends View<P> {

    void setModal(boolean isModal);

    /**
     * Permet de centrer la vue dans le display du navigateur.
     */
    void center();

    /**
     * Ferme la popup.
     */
    void hide();

    boolean isShowing();

    /**
     * {@link PopupViewCloseHandler} à appeler à la fermeture de cette popup.
     * Passez {@code null} pour désenregistrer un handler existant.
     */
    void setCloseHandler(PopupViewCloseHandler popupViewCloseHandler);

    /**
     * Repositionne la popup. Les unités sont en pixel.
     */
    void setPosition(int left, int top);

    /**
     * <b>Important!</b> Do not call this directly, instead use
     * {@link PresenterWidget#addToPopupSlot(PresenterWidget)} passing this
     * view's {@link PresenterWidget}.
     * <p/>
     * Make sure the {@link PopupView} is visible.
     */
    void show();

}
